package CS4310.csueb.story;

import CS4310.csueb.characters.Hero;
import CS4310.csueb.visual.SpriteManager;

/**
 * Dictates the mandatory methods that each game objective must
 * have in order to inform the user and update the game position.
 *
 * @author Levester Chaney
 *
 */
public interface Objective
{	
	/**
	 * Queries the Hero and SpriteManager to determine whether or not
	 * this condition has been satisfied.
	 * 
	 * @param h the Hero of the game 
	 * @param s the collection of characters and items 
	 * @return true if the condition of this objective has been fulfilled,
	 * 			false otherwise.
	 */
	public boolean isComplete(Hero h, SpriteManager s);
	
	/**
	 * Upon completion of the objective, a portion of the story line will
	 * be displayed in the bio frame's story tab. Ideally, when the game
	 * is completed, there will be a coherent story line for the player to
	 * read if they so choose.
	 * 
	 * @return the chunk of the story to display in the bio frame
	 */
	public String addStory();
	
	/**
	 * A description of this objective to be displayed in the objective tab
	 * of the bio frame. This is a way for the player to know what is being
	 * asked of him/her in order to progress the game.
	 *  
	 * @return the description of this game objective
	 */
	public String description();
}
